BRAVIAのREST APIを使ってテレビを操作してみた
はい、どーも!CX事業本部の吉田です。
今日 Twitterをいつものように見てたところ、以下のようなツイートが流れてきました。
BRAVIAはガッツリAPIあるな。いいこと聞いた。 "はじめに | BRAVIA Professional Display Knowledge Center" https://t.co/0ngvvFMIrM
— moyashi (@hitoriblog) August 21, 2020
ちょっと見た感じ、法人向け製品のみに実装されてるのかな?と・・・ ちょうど我が家のテレビもBRAVIA(KJ-55X8550G)だったので、試しにそのIPを叩いてみると、nginxのレスポンスが返ってくるではありませんか。 多分REST APIで叩けそうだぞ!ということで試してみました。
前準備
まずはテレビ側を準備します。
テレビのホーム画面から設定に入ります。機種によってことなりますが、設定がホーム画面右上のギアアイコンから入れます。
次にネットワーク周りの設定からIPコントロールに入ります。
認証のところが最初は Normal
だけのはずなので、これを Normal and Pre Shared Key
に変えます。
その後、下の Pre Shared Key
からキーの値を設定しておきます。このキーはREST APIを叩く際に使う認証キーです。自分はひとまずテストとして数字4桁で設定しました。
その後、レンダラー設定からレンダラー機能が有効になっていることを確認します。
やってみる
これでテレビ側の準備は完了したので、実際に電源をオン/オフするAPIを叩いてみましょう。API仕様書はこちらですね。
どうやら http://[テレビのIPアドレス]/sony/system
に対してPOSTすればいいようです。ボディには
{ "method": "setPowerStatus", "id": 55, "params": [ {"status": true} ], "version": "1.0" }
という内容をセットしましょう。認証方法ですがヘッダに X-Auth-PSK:[キーの値]
を設定すればいいようです。
それではcurlを使って、実際にAPIを叩いてみます。
curl -H 'X-Auth-PSK:[認証キー]' -XPOST http://[テレビのIPアドレス]/sony/system -d '{"method": "setPowerStatus","id": 55,"params": [{"status": true}],"version": "1.0"}'
テレビの電源が入ることが確認できるかと思います。
ちなみに params
の status
に false
を指定すると、逆に電源をオフにできます。
まとめ
電源をオン/オフするだけでなく、APIリストには他にも多くのAPIがあるようです。
このあたりでいろいろ遊んでみるのも楽しそうですね。